package com.linkhub.oms.admin.modules.product.excel.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.linkhub.oms.admin.modules.product.excel.enums.BooleanCellMappingEnum;
import com.linkhub.oms.admin.modules.product.excel.enums.CategoryCellMappingEnum;
import com.linkhub.oms.admin.modules.product.excel.enums.LogisticsAttributeCellMappingEnum;
import com.linkhub.oms.admin.modules.product.excel.enums.WrapTypeCellMappingEnum;
import com.linkhub.oms.admin.modules.product.excel.enums.WrapUnitCellMappingEnum;
import com.linkhub.oms.component.excel.annotation.CellPropertyMapping;
import com.linkhub.oms.component.excel.annotation.RequiredProperty;
import com.linkhub.oms.component.excel.converter.CellEnumIntegerConverter;
import com.linkhub.oms.component.excel.converter.CellEnumListIntegerConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @Description: LocalProductExcelDataDTO
 * @Author: echo
 * @Date: 2024/5/11 14:34
 * @Version: 1.0
 */
@Data
public class LocalProductExcelDataDTO implements Serializable {

    @ApiModelProperty(value = "sku")
    @ExcelProperty(index = 0)
    @RequiredProperty
    private String sku;

    @ApiModelProperty(value = "spu")
    @ExcelProperty(index = 1)
    private String spu;

    @ApiModelProperty(value = "英文品名")
    @ExcelProperty(index = 2)
    @RequiredProperty
    private String productEnTitle;

    @ApiModelProperty(value = "中文品名")
    @ExcelProperty(index = 3)
    private String productCTitle;

    @ApiModelProperty(value = "类目编码")
    @ExcelProperty(index = 4, converter = CellEnumIntegerConverter.class)
    @RequiredProperty
    @CellPropertyMapping(mappingEnum = CategoryCellMappingEnum.class)
    private Integer categoryCode;

    private String categoryName;

    @ApiModelProperty(value = "upc码")
    @ExcelProperty(index = 5)
    private String upc;

    @ApiModelProperty(value = "fnsku码")
    @ExcelProperty(index = 6)
    private String fnsku;

    @ApiModelProperty(value = "其他商品条码")
    @ExcelProperty(index = 7)
    private String otherCode;

    @ApiModelProperty(value = "型号")
    @ExcelProperty(index = 8)
    private String model;

    @ApiModelProperty(value = "品牌")
    @ExcelProperty(index = 9)
    private String brand;

    @ApiModelProperty(value = "采购价格")
    @ExcelProperty(index = 10)
    private String purchasePrice;

    @ApiModelProperty(value = "物流属性：1-带磁；2-带电；3-液体；4-粉末；5-易碎；6-膏体；7-化妆品；8-纺织品")
    @ExcelProperty(index = 11, converter = CellEnumListIntegerConverter.class)
    @CellPropertyMapping(mappingEnum = LogisticsAttributeCellMappingEnum.class)
    private List<Integer> logisticsAttribute;

    @ApiModelProperty(value = "规格尺寸单位: 1-公制；2-英制")
    @ExcelProperty(index = 12, converter = CellEnumIntegerConverter.class)
    @RequiredProperty
    @CellPropertyMapping(mappingEnum = WrapUnitCellMappingEnum.class)
    private Integer specificationUnit;

    @ApiModelProperty(value = "规格尺寸信息，多个信息使用-拼接：长度(英寸)-宽度(英寸)-高度(英寸)-重量(盎司)")
    @ExcelProperty(index = 13)
    private String specificationProductInfo;

    @ApiModelProperty(value = "包装单位: 1-公制；2-英制")
    @ExcelProperty(index = 14, converter = CellEnumIntegerConverter.class)
    @RequiredProperty
    @CellPropertyMapping(mappingEnum = WrapUnitCellMappingEnum.class)
    private Integer wrapUnit;

    @ApiModelProperty(value = "包装产品信息，多个信息使用-拼接：长度(英寸)-宽度(英寸)-高度(英寸)-重量(盎司)")
    @ExcelProperty(index = 15)
    private String wrapProductInfo;


    @ApiModelProperty(value = "包装类型，1-盒装；2-袋装")
    @ExcelProperty(index = 16, converter = CellEnumIntegerConverter.class)
    @CellPropertyMapping(mappingEnum = WrapTypeCellMappingEnum.class)
    private Integer wrapType;

    @ApiModelProperty(value = "Ready2Ship：0-否；1-是")
    @ExcelProperty(index = 17, converter = CellEnumIntegerConverter.class)
    @CellPropertyMapping(mappingEnum = BooleanCellMappingEnum.class)
    private Integer readyShip;

    @ApiModelProperty(value = "海关编码")
    @ExcelProperty(index = 18)
    private String hsCode;

    @ApiModelProperty(value = "材质英文")
    @ExcelProperty(index = 19)
    private String eMaterial;

    @ApiModelProperty(value = "材质中文")
    @ExcelProperty(index = 20)
    private String cMaterial;

    @ApiModelProperty(value = "用途英文")
    @ExcelProperty(index = 21)
    private String ePurpose;

    @ApiModelProperty(value = "用途中文")
    @ExcelProperty(index = 22)
    private String cPurpose;

    @ApiModelProperty(value = "其它申报要素")
    @ExcelProperty(index = 23)
    private String otherDeclarationElements;
}
